#include<iostream>
#include "UdpServer.hpp"

int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        std::cerr<<"Usage:"<<argv[0]<<"localport"<<std::endl;
        DIE(USAGE_ERR);
    }
    uint16_t port = std::stoi(argv[1]);
    
    LogModule::ENABLE_CONSOLE_LOG();
    std::shared_ptr<Dictionary> dict_ptr = std::make_shared<Dictionary>();
    // std::unique_ptr<UdpServer> svr_uptr = std::make_unique<UdpServer>(port, [&dict_ptr](const std::string& word){
    //     return dict_ptr->Translate(word);
    // });

    func_t trans_func = std::bind(&Dictionary::Translate, dict_ptr.get(), std::placeholders::_1);
    std::unique_ptr<UdpServer> svr_uptr = std::make_unique<UdpServer>(trans_func, port);
    svr_uptr->InitServer();
    svr_uptr->Start();
    return 0;
}